using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

//Importamos
using EventSys.BussinesEntities;

namespace EventSys.Repository.Mapping
{
    public class EventoMap : EntityTypeConfiguration<Evento>
    {

        public EventoMap()
        {
            // Primary Key
            this.HasKey(t => t.idEvents);

            // Properties
            this.Property(t => t.NomEvento)
                .HasMaxLength(50);

            this.Property(t => t.Organizador)
                .HasMaxLength(50);

            this.Property(t => t.Carrera)
                .HasMaxLength(30);

            this.Property(t => t.Sede)
                .HasMaxLength(20);

            this.Property(t => t.Informes)
                .HasMaxLength(50);

            this.Ignore(t=>t.ImageMimeType);

            // Table & Column Mappings
            this.ToTable("Evento");
            this.Property(t => t.idEvents).HasColumnName("idEvents");
            this.Property(t => t.NomEvento).HasColumnName("NomEvento");
            this.Property(t => t.FechaIni).HasColumnName("FechaIni");
            this.Property(t => t.FechaFin).HasColumnName("FechaFin");
            this.Property(t => t.idTipoEvento).HasColumnName("idTipoEvento");
            this.Property(t => t.Organizador).HasColumnName("Organizador");
            this.Property(t => t.Carrera).HasColumnName("Carrera");
            this.Property(t => t.Sede).HasColumnName("Sede");
            this.Property(t => t.Logo).HasColumnName("Logo");
            this.Property(t => t.Informes).HasColumnName("Informes");
            this.Property(t => t.IngresoLibre).HasColumnName("IngresoLibre");
            this.Property(t => t.idEstado).HasColumnName("idEstado");
            this.Property(t => t.EventoSimple).HasColumnName("EventoSimple");

            // Relationships
            this.HasOptional(t => t.Estado)
                .WithMany(t => t.Eventoes)
                .HasForeignKey(d => d.idEstado);
            this.HasOptional(t => t.TipoActividad)
                .WithMany(t => t.Eventoes)
                .HasForeignKey(d => d.idTipoEvento);

        }
    }
}


        
//        public EventoMap()
//        {
//            // Primary Key
//            this.HasKey(t => t.idEvents);

//            // Properties
//            this.Property(t => t.NomEvento)
//                .HasMaxLength(50);

//            this.Property(t => t.Organizador)
//                .HasMaxLength(50);

//            this.Property(t => t.Carrera)
//                .HasMaxLength(30);

//            this.Property(t => t.Sede)
//                .HasMaxLength(20);

//            this.Property(t => t.Informes)
//                .HasMaxLength(50);

//            // Table & Column Mappings
//            this.ToTable("Evento");
//            this.Property(t => t.idEvents).HasColumnName("idEvents");
//            this.Property(t => t.NomEvento).HasColumnName("NomEvento");
//            this.Property(t => t.FechaIni).HasColumnName("FechaIni");
//            this.Property(t => t.FechaFin).HasColumnName("FechaFin");
//            this.Property(t => t.idTipoEvento).HasColumnName("idTipoEvento");
//            this.Property(t => t.Organizador).HasColumnName("Organizador");
//            this.Property(t => t.Carrera).HasColumnName("Carrera");
//            this.Property(t => t.Sede).HasColumnName("Sede");
//            this.Property(t => t.Logo).HasColumnName("Logo");
//            this.Property(t => t.Informes).HasColumnName("Informes");
//            this.Property(t => t.IngresoLibre).HasColumnName("IngresoLibre");
//            this.Property(t => t.idEstado).HasColumnName("idEstado");
//            this.Property(t => t.EventoSimple).HasColumnName("EventoSimple");

//            // Relationships
//            this.HasOptional(t => t.Estado)
//                .WithMany(t => t.Eventoes)
//                .HasForeignKey(d => d.idEstado);
//            this.HasOptional(t => t.TipoActividad)
//                .WithMany(t => t.Eventoes)
//                .HasForeignKey(d => d.idTipoEvento);

//        }
//    }
//}
